2011-02-09 44 views
5

Một khách hàng muốn tài liệu Word được lưu vào cơ sở dữ liệu mySQL mặc dù tôi tranh luận chống lại. Các tài liệu không được đặc biệt lớn, không quá 1 MB. Tôi đã kích hoạt BLOB trong quản trị CF và thiết lập bộ đệm blob đến 1.000.000Làm thế nào để lưu trữ tài liệu Word dưới dạng BLOB trong mySQL với Coldfusion

Dưới đây là SQL của tôi

<cfset newMessageID=1569> 
<cfset fileName="c:\temp\0.doc"> 

<cffile action = "readbinary" 
file = "#fileName#" 
variable = "fileData"> 

<cfquery name="addFile" datasource='#application.dsn#'> 
    INSERT into files (fileID, fileData) 
    Values (#newMessageID#, <cfqueryparam value="#fileData#" cfsqltype="CF_SQL_BLOB">) 
</cfquery> 

tôi nhận được "Dữ liệu cắt ngắn: Dữ liệu quá dài cho cột 'fileData' tại dòng 1" lỗi. Trường dữ liệu trong bảng tệp được đặt chắc chắn là blob. Tôi đang làm gì sai?

CF 9,01, mySQL 5.4

Tôi đang làm gì sai

+0

Nghĩ bạn cần bọc '# fileData #' trong 'ToBase64()' - xem tài liệu tại đây: http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_f_08.html Đọc sử dụng 'BinaryEncode () 'để chuyển đổi nó trở lại: http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=functions_a-b_31.html#4989676 – orangepips

+0

Tôi đã thử điều đó rồi. Nếu tôi chỉ đơn giản là chuyển đổi sang Base64 nó ném một lỗi cast với cfqueryparam của tôi. Nếu tôi chạy mà không có cfqueryparam tôi quay trở lại "dữ liệu quá dài cho cột 'filedata'" – Saul

+0

@Saul - Những loại 'blob'? Có nhiều loại khác nhau dài, trung bình, ... http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html và http://dev.mysql.com/doc/refman/5.0 /en/blob.html – Leigh

Trả lời

5

Những loại blob? Có nhiều loại khác nhau bao gồm long and medium blob. Blob là (xấp xỉ) 2^16 = 65,536 byte, blob trung bình là 2^24 = 16,777,216 byte. Nếu bạn nghĩ rằng bạn có thể vượt quá blob trung bình, sau đó đi với longblob tức là 2^32.

-2

Chỉ là một ý tưởng tồi và xấu.

tôi sẽ hoặc là:

  1. Chuyển nó sang tập tin văn bản 1, sau đó bạn đơn giản hóa việc nhập văn bản chỉ thô.

  2. Hoặc chỉ cần tải nó lên một số thư mục, và làm cho nó có sẵn để tải lại hoặc xem trực tuyến

cắt cổ họng của bạn của bạn cố gắng để lưu trữ nó trong cơ sở dữ liệu ...

+0

Bạn đọc trong OP mà tôi tranh luận chống lại nó phải không? Vào cuối ngày anh ta trả tiền cho piper ... dù sao tôi không nghĩ nó sẽ quá tệ. Tôi phân tích cú pháp tài liệu Word và lưu trữ trong một bảng cho dữ liệu meta, tất cả được sử dụng cho bất kỳ truy vấn/tham gia nào. Bảng tệp chỉ có ID và mediumblob. Về an ninh tập tin bên cạnh, đăng nhập và sao lưu dễ dàng hơn ;-) – Saul

Các vấn đề liên quan